/*
 * Body.h
 *
 *  Created on: 11/02/2011
 *      Author: Nenem
 */

#ifndef BODY_H_
#define BODY_H_

#include "Tools.h"
#include "Position.h"
#include "Direction.h"

class Body {
public:
	Body() {}
	virtual ~Body() {}

	virtual Rectangle collideAreaMovement(Point2D oldP, Point2D newP, Direction *direction) = 0;

	virtual Rectangle collideArea(Point2D pos, Direction *direction) = 0;

	virtual Point2D distance(Point2D P, Direction *direction, Rectangle otherArea) = 0;

	virtual bool isRigid() = 0;

	virtual void update() = 0;

	virtual Information getEast() const = 0;
	virtual Information getNorth() const = 0;
	virtual Information getSouth() const = 0;
	virtual Information getWest() const = 0;
	virtual void setEast(Information east) = 0;
	virtual void setNorth(Information north) = 0;
	virtual void setSouth(Information south) = 0;
	virtual void setWest(Information west) = 0;

	virtual Position *getPos() const = 0;
	virtual void setPos(Position *pos) = 0;
	virtual Direction *getDirection() const = 0;
	virtual void setDirection(Direction *direction) = 0;

};

#endif /* BODY_H_ */
